/************************************************************
*Implementacion de pila de cadenas de etiquetas y variables *
*Author     :   Simon Emmanuel Gutierrez Brida              *
*Version    :   0.1                                         *
*Fecha      :   Octubre/2011                                *
*------------------------------------------------           *
*************************************************************/

#include "pila.h"
#include <stdlib.h>

Pila* nuevaPila() {
    Pila *nueva = (Pila*) malloc(sizeof(Pila));
    nueva->tope = NULL;
    return nueva;
}

void push(Pila *pila, char *cadena, Variable *eval) {
    NodoPila *nuevo = nuevoNodoPila_info_siguiente(cadena, eval, pila->tope);
    pila->tope = nuevo;
}

bool esVacia(Pila *pila) {
    return pila->tope == NULL;
}

LabelNEval* pop(Pila *pila) {
    LabelNEval *retorno = obtenerInfo_nodoPila(pila->tope);
    pila->tope = obtenerSiguiente_nodoPila(pila->tope);
    return retorno;
}

LabelNEval* peek(Pila *pila) {
    LabelNEval *retorno = obtenerInfo_nodoPila(pila->tope);
    return retorno;
}